//app.js
var setting = require('setting.js');
var auth = require('./utils/auth.js');
var request = require('./utils/request.js');
var common = require('./utils/common.js');

App({
    globalData: {
        setting: setting,   //用户可配置项
        wechatUser: null,   //微信的用户信息
        userInfo: null,     //商城的用户信息TP 
        config: null,       //app系统配置
        code: null,         //微信登录code
        menu_index:0,       //自定义菜单索引
        menu_model:[],      //自定义菜单模型
        defaultMenu:false,  //自定义菜单状态  
		    is_apply:0,         //是否在审核阶段
        constom_index: null,    //自定义首页数据本地调用
        nowtime:null
    },

    /** 授权对象 */
    auth: auth,

    /** 全局请求对象，涉及业务的请求，请使用此接口 */
    request: request,

    /** 启动加载 */
    onLaunch: function () {
        this.hidetabbar();
        this.initExt();
        var setting = this.globalData.setting;
        setting.resourceUrl = setting.url + '/template/mobile/rainbow';
        this.autoUpdate()
    },

    initExt: function () {
        var ext = wx.getExtConfigSync();
        var setting = this.globalData.setting;
        if (ext.store_name) {
            setting.appName = ext.store_name;
            setting.share.title = ext.store_name;
            setting.appLogo = ext.store_logo;
            setting.saas_app = ext.saas_app;
            if (ext.is_refactor) {
                setting.url = ext.request_url + '/saas/' + setting.saas_app;
            } else {
                setting.url = ext.request_url;
            }
            setting.ext_on = 1; //第三方配置开启
        } else {
            setting.saas_app = '';
            setting.ext_on = 0;
        }
    },

    /** 
     * 获取用户信息（包括微信用户），有授权作用
     * cb：成功回调函数，入参:cb(userInfo,wechatUser)
     * force：是否强制更新数据（发出请求）
     */
    getUserInfo: function (cb, force, isShowLoading) {
        var that = this;
        if (auth.isAuth() && !force) {
            typeof cb == "function" && cb(that.globalData.userInfo, that.globalData.wechatUser);
        } else {      
            if (!auth.isAuth()) {
                return auth.auth(cb); //授权操作
            }
            request.get('/api/user/userInfo', {
                isShowLoading: typeof isShowLoading == 'undefined' ? true : isShowLoading,
                success: function (res) {                   
                    if (res.data.result.head_pic) {
                        if (res.data.result.head_pic.indexOf("http") == -1) {
                            res.data.result.head_pic = setting.url + res.data.result.head_pic;
                        }
                    }                   
                    wx.setStorageSync('app:userInfo', res.data.result);
                    that.globalData.userInfo = res.data.result;
                    that.globalData.userInfo.head_pic = common.getFullUrl(that.globalData.userInfo.head_pic);
                    typeof cb == "function" && cb(that.globalData.userInfo, that.globalData.wechatUser);
                }
            });
        }
    },
    
    /** 获取app系统配置 */
    getConfig: function (cb, force) {
        var that = this;
        if (this.globalData.config && !force) {
            typeof cb == "function" && cb(this.globalData.config);
        } else {
            request.get('/api/index/getConfig', {
                success: function (res) {
                    that.globalData.config = res.data.result;
                    typeof cb == "function" && cb(that.globalData.config);
                }
            });
        }
    },

    /** 获取前index页的数据，默认前一页 */
    getPrevPageData: function (index) {
        if (typeof index == 'undefined') {
            index = 1;
        }
        var pages = getCurrentPages();
        return pages[pages.length - index - 1].data; 
    },

    /** 加载提醒 */
    showLoading: function(func, time) {
        typeof time == 'undefined' && (time = 1500);
        wx.showToast({
            title: '加载中',
            icon: 'loading',
            duration: time,
            mask: true,
            complete: function () {
                if (typeof func == 'function') {
                    setTimeout(func, time);
                }
            }
        });
    },

    showSuccess: function (msg, func, time) {
        typeof time == 'undefined' && (time = 1000);
        wx.showToast({
            title: msg,
            icon: 'success',
            duration: time,
            mask: true,
            complete: function () {
                if (typeof func == 'function') {
                    setTimeout(func, time);
                }
            }
        });
    },

    showWarning: function (msg, func, time, mask) {
        !time && (time = 1500);
        typeof mask == 'undefined' && (mask = true);
        wx.showToast({
            title: msg,
            mask: mask,
            duration: time,
            image: '/images/gt.png',
            complete: function () {
                if (typeof func == 'function') {
                    setTimeout(func, time);
                }
            }
        });
    },

    showTextWarining: function (msg, func, time, mask) {
        !time && (time = 2000);
        typeof mask == 'undefined' && (mask = true);
        wx.showToast({
            title: msg,
            mask: mask,
            duration: time,
            icon:'none',
            complete: function () {
                if (typeof func == 'function') {
                    setTimeout(func, time);
                }
            }
        });
    },

    confirmBox: function (msg, func) {
        wx.showModal({
            title: msg,
            showCancel: false,
            complete: function () {
                typeof func == 'function' && func();
            }
        });
    },
    
    validatemobile: function (mobile) {
         if (mobile.length == 0) {
             this.showTextWarining('请输入手机号码!');
              return false;
         }
         if (mobile.length != 11) {
           this.showTextWarining('手机号码长度有误!');
            return false;
         }
        var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(16[0-9]{1})|(19[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\d{8})$/;
         if (!myreg.test(mobile)) {
                this.showTextWarining('手机号码有误!');
              return false;
         }
        return true;
    },
    hidetabbar() {  //隐藏默认tab
        wx.hideTabBar({
          fail: function() {
            setTimeout(function() { // 做了个延时重试一次，作为保底。
              wx.hideTabBar()
            }, 500)
          }
        });
      },
      autoUpdate:function(){
          console.log(new Date())
          var self=this
          // 获取小程序更新机制兼容
          if (wx.canIUse('getUpdateManager')) {
           const updateManager = wx.getUpdateManager()
           //1. 检查小程序是否有新版本发布
           updateManager.onCheckForUpdate(function (res) {
            // 请求完新版本信息的回调
            if (res.hasUpdate) {
             //2. 小程序有新版本，则静默下载新版本，做好更新准备
             updateManager.onUpdateReady(function () {
              console.log(new Date())
              wx.showModal({
               title: '更新提示',
               content: '新版本已经准备好，是否重启应用？',
               success: function (res) {
                if (res.confirm) {
                 //3. 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                 updateManager.applyUpdate()
                } else if (res.cancel) {
                 //如果需要强制更新，则给出二次弹窗，如果不需要，则这里的代码都可以删掉了
                 wx.showModal({
                  title: '温馨提示~',
                  content: '本次版本更新涉及到新的功能添加，旧版本无法正常访问的哦~',
                  success: function (res) {   
                   self.autoUpdate()
                   return;         
                   //第二次提示后，强制更新           
                   if (res.confirm) {
                    // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                    updateManager.applyUpdate()
                   } else if (res.cancel) {
                    //重新回到版本更新提示
                    self.autoUpdate()
                   }
                  }
                 })
                }
               }
              })
             })
             updateManager.onUpdateFailed(function () {
              // 新的版本下载失败
              wx.showModal({
               title: '已经有新版本了哟~',
               content: '新版本已经上线啦~，请您删除当前小程序，重新搜索打开哟~',
              })
             })
            }
           })
          } else {
           // 如果希望用户在最新版本的客户端上体验您的小程序，可以这样子提示
           wx.showModal({
            title: '提示',
            content: '当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试。'
           })
          }
         }
})